﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.Mapping.Update;
using AutoMapper;
using DTO;

namespace DAO
{
    public class TinhTrangVe_DAO
    {
        public static TinhTrangVe_DTO CreateTinhTrangVeDTO(TinhTrangVe tinhtrangve)
        {
            TinhTrangVe_DTO tinhtrangveDTO = new TinhTrangVe_DTO();
            Mapper.CreateMap<TinhTrangVe, TinhTrangVe_DTO>();
            tinhtrangveDTO = Mapper.Map<TinhTrangVe, TinhTrangVe_DTO>(tinhtrangve);
            return tinhtrangveDTO;
        }

        //public static TinhTrangVe CreateTinhTrangVeEFF(TinhTrangVe_DTO tinhtrangveDTO)
        //{
        //    TinhTrangVe tinhtrangve = new TinhTrangVe();
        //    Mapper.CreateMap<TinhTrangVe_DTO, TinhTrangVe>();
        //    tinhtrangve = Mapper.Map<TinhTrangVe_DTO, TinhTrangVe>(tinhtrangveDTO);
        //    return tinhtrangve;
        //}

        public List<TinhTrangVe_DTO> GetTinhTrangVeList()
        {
            List<TinhTrangVe_DTO> listTinhTrangVe = new List<TinhTrangVe_DTO>();
            try
            {
                QLCBDataContext context = new QLCBDataContext();
                var query = from tt in context.TinhTrangVes select tt;
                foreach (var cb in query)
                {
                    TinhTrangVe_DTO tinhtrangDTO = CreateTinhTrangVeDTO(cb);
                    listTinhTrangVe.Add(tinhtrangDTO);
                }
            }
            catch (System.Exception ex)
            {
                string str = ex.Message;
            }
            return listTinhTrangVe;
        }

        public List<TinhTrangVe_DTO> GetTinhTrangDetails(string mMaChuyenBay)
        {
            List<TinhTrangVe_DTO> listtinhtrangDTO = new List<TinhTrangVe_DTO>();
            try
            {
                QLCBDataContext context = new QLCBDataContext();
                var query = from tr in context.TinhTrangVes
                            where tr.MaChuyenBay == mMaChuyenBay
                            select tr;
                foreach (var cb in query)
                {
                    TinhTrangVe_DTO tinhtrangDTO = CreateTinhTrangVeDTO(cb);
                    listtinhtrangDTO.Add(tinhtrangDTO);
                }
            }
            catch (System.Exception)
            {
            }
            return listtinhtrangDTO;
        }

        public TinhTrangVe_DTO GetTinhTrangVeDetails(string maChuyenBay, string maHangVe)
        {
            TinhTrangVe_DTO tinhtrangveDTO = new TinhTrangVe_DTO();
            try
            {
                QLCBDataContext context = new QLCBDataContext();
                var query = from tr in context.TinhTrangVes
                            where tr.MaChuyenBay == maChuyenBay && tr.MaHangVe == maHangVe
                            select tr;
                TinhTrangVe tinhtrangveEF = query.First();
                tinhtrangveDTO = CreateTinhTrangVeDTO(tinhtrangveEF);
            }
            catch (System.Exception)
            {
            }
            return tinhtrangveDTO;
        }

        public static string MaTinhTrangVeMax()
        {
            QLCBDataContext context = new QLCBDataContext();
            string query = (from cb in context.TinhTrangVes select cb.MaTinhTrangVe).Max();
            return query;
        }

        public void InsertTinhTrangVe(TinhTrangVe_DTO tinhtrangveDTO)
        {
            try
            {
                QLCBDataContext context = new QLCBDataContext();
                TinhTrangVe tinhtrangve = new TinhTrangVe();
                tinhtrangve.MaTinhTrangVe = tinhtrangveDTO.MaTinhTrangVe;
                tinhtrangve.MaChuyenBay = tinhtrangveDTO.MaChuyenBay;
                tinhtrangve.MaHangVe = tinhtrangveDTO.MaHangVe;
                tinhtrangve.SoGheTrong = tinhtrangveDTO.SoGheTrong;
                tinhtrangve.SoGheDat = tinhtrangveDTO.SoGheDat;
                context.TinhTrangVes.InsertOnSubmit(tinhtrangve);
                context.SubmitChanges();
            }
            catch (System.Exception ex)
            {
                string str = ex.Message;
            }
        }

        public void UpdateTinhTrangVe(TinhTrangVe_DTO tinhtrangveDTO)
        {
            try
            {
                QLCBDataContext context = new QLCBDataContext();
                TinhTrangVe tinhtrangve = new TinhTrangVe();
                tinhtrangve = context.TinhTrangVes.Single(tt => tt.MaTinhTrangVe == tinhtrangveDTO.MaTinhTrangVe);
                tinhtrangve.MaTinhTrangVe = tinhtrangveDTO.MaTinhTrangVe;
                tinhtrangve.MaChuyenBay = tinhtrangveDTO.MaChuyenBay;
                tinhtrangve.MaHangVe = tinhtrangveDTO.MaHangVe;
                tinhtrangve.SoGheTrong = tinhtrangveDTO.SoGheTrong;
                tinhtrangve.SoGheDat = tinhtrangveDTO.SoGheDat;
                context.SubmitChanges();
            }
            catch (System.Exception ex)
            {
                string str = ex.Message;
            }
        }

        public void DeleteTinhTrangVe(TinhTrangVe_DTO tinhtrangveDTO)
        {
            try
            {
                QLCBDataContext context = new QLCBDataContext();
                TinhTrangVe tinhtrangve = context.TinhTrangVes.Single(tr => tr.MaTinhTrangVe == tinhtrangveDTO.MaTinhTrangVe);
                context.TinhTrangVes.DeleteOnSubmit(tinhtrangve);
                context.SubmitChanges();
            }
            catch (System.Exception ex)
            {
                string str = ex.Message;
            }
        }

    }
}
